Wir veranschaulichen die Entwicklung einer graphischen Benutzerschnittstelle (GUI) am Beispiel der Arbeitsmappe QuadratProgrammiertDialog.xls. Das Programm startet nach einem Klick auf die Schaltfläche Quadrat zeichnen und verlangt vom Benutzer die Werte für die Abszisse und Ordinate der linken oberen Quadratecke. Nach der Eingabe der Seitenlänge zeichnet es ein Quadrat an der eingegebenen Position.
Excel stellt vordefinierte Objektklassen bereit, nach deren Muster der Entwickler Objekte erstellen kann. Man bezeichnet Objektklassen deshalb auch als ”Objektfabriken”. Die Benutzeroberfläche enthält Objekte der Klassen Tabellenzellen, Schaltflächen und Eingabefelder:
die Tabellenzellen Hilfe und Folien
die Schaltfläche Quadrat zeichnen
das Eingabefeld Abszisse.
Der Begriff Objekt lässt sich am Beispiel der Schaltfläche definieren:
Ein Objekt trägt einen eindeutigen Namen, zum Beispiel Quadrat zeichen
Objekteigenschaften sind zum Beispiel Position, Grösse und Schriftformat
Der Projektexplorer von QuadratProgrammiertDialog.xls gibt einen Überblick über das ProjektQuadratDialog. Das Projekt verwendet Subroutine Quadrat der Arbeitsmappe QuadratProgrammiert.xls. Im Projektexplorer finden Sie einen entsprechenden Verweis:
Ein Verweis kann sicht nicht nur auf eine Arbeitsmappe, sondern auch auf Nicht-Excelcode beziehen. Externer Code kann zum Beispiel aus ausführbaren Dateien mit der Erweiterung .exe (Abkürzung für executable code), ActiveX-Steuerelementen (*.ocx) oder Programmbibliotheken (zum Beispiel *.dll) stammen.
Suchen Sie nach einigen .exe-, ocx.- und .dll-Dateien ((»Rechtsklick
auf Start-Schaltfläche)).
Der folgende Bildschirmausschnitt zeigt, wie der Entwickler nach einem Klick auf den Menüpunkt »Formular der Entwicklungsumgebung (»Alt/F11) die Schaltfläche Quadrat zeichnen auf das Tabellenblatt gesetzt hat. Sobald der Entwickler mit dem Schaltenflächensymbol der Toolbox die Schaltfläche gezeichnet hat, verlangt Excel den Namen einer Ereignisprozedur:
Quadrat_Klick
sei der Name der Ereignisprozedur. Sie soll die bereits in QuadratProgrammiert.xls definierte Subroutine verwenden:Quadrat( Blattname As String, X As Integer, Y As Integer, Seite As Integer)
Die vier Argumente
Blattname, X, Y und Seite werden in QuadratProgrammiertDialog.xls vom Benutzer definiert, und zwar in der Anweisung InputBox. Wer Argumentwerte nicht bereits zur Übersetzungszeit definiert, sondern erst zur Laufzeit vom Benutzer eingeben lässt, muss mit Eingabefehlern rechnen. Die Ereignisprozedur Quadrat_Klick der Schaltfläche Quadrat zeichnen soll deshalb die Eingabe zuerst prüfen. Das Ergebnis der Prüfung wird im Ausgabefeld MsgBox mitgeteilt. Das folgende Bild zeigt eine mögliche Fehlermeldung:Wir definieren nun die Ereignisprozedur Quadrat_Click der Schaltfläche Quadrat zeichnen. Sie soll die folgenden Aufgaben erfüllen:
Ihr Code lautet deshalb:
Quadrat_Click() Dim X As String, Y As String, Länge As String ‘-- Eingaben lesen X = InputBox(Prompt:=“X: ”, Title:=“Abszisse”) 'benannte Argumente Y = InputBox(“Y: ”, “Ordinate”) 'Positionsargumente Länge = InputBox(“Seitenlänge: ”, “Quadrat”) ‘-- Eingaben prüfen If X = "" Or X = "0" Or Y = "" Or Y = "0" Or Länge = "" Or Länge = "0" Then MsgBox "Null- oder Leereingaben nicht erlaubt" Else Quadrat “Dialog”, CInt(X),CInt(Y),CInt(Länge) End If End SubSub
Das Eingabefeld wird im Gegensatz zur Schaltfläche Quadrat zeichnen nicht vom Programmierer entworfen, sondern ist das Ergebnis der Anweisung InputBox. Die Entscheidungsanweisung prüft die eingelesenen Argumente auf leer ("") oder 0. Das Schlüsselwort Or ist ein boolscher Operator. Boolsche Operatoren wie
Or, And und Not verknüpfen Operanden so, dass die Verknüpfung den Wert True oder False des Datentyps Boolean ergibt. Gibt der Benutzer zum Beispiel für X den Wert 0 ein, so wird der Ausdruck X = "" Or X = "0" Or Y = "" Or Y = "0" Or Länge = "" Or Länge = "0" wahr und das Programm meldet ”Null- oder Leereingaben nicht erlaubt". Dem Benutzer bleibt dann nichts anderes übrig, als alle drei Argumente nochmals einzugeben.
Wie erreichen Sie, dass der Benutzer nach einem Fehler nur einen Wert neu
eingeben muss?
Der Aufruf von Quadrat enthält drei Funktionsaufrufe des Formats Ganzzahl = CInt(<Zahlen- oder Textausdruck>). CInt (convert to integer) konvertiert einen nummerischen oder alphanummerischen Ausdruck in einen Wert des Datentyps Integer. Diese Funktion ist erforderlich, weil die Argumente von Quadrat (mit Ausnahme des ersten) ganzzahlig sind, der Rückgabewert der vordefinierten Funktion InputBox aber immer eine Zeichenkette sein muss.
Übung HexagonDialog
![]()
Verweise als eine
Art der Wiederverwendung
von Code